﻿using System;

using Moe.ECamel.Common.Entities;

namespace Moe.ECamel.Common.Contracts
{
	public interface IInventoryService : IECamelService
	{
		/// <summary>
		/// Adds a copy of the specified item to the specified library.
		/// </summary>
		/// <param name="itemId">Item Id.</param>
		/// <param name="libraryId">Library Id.</param>
		void AddCopy(int itemId, int libraryId);
		/// <summary>
		/// Deletes a copy of the specified item from the specified library.
		/// </summary>
		/// <param name="itemId">Item Id.</param>
		/// <param name="libraryId">Library Id.</param>
		ECamelError DeleteCopy(int itemId, int libraryId);
		/// <summary>
		/// Tries to transfer a copy of the specified item to the specified library.
		/// </summary>
		/// <param name="itemId"></param>
		/// <param name="libraryId"></param>
		/// <returns></returns>
		TransferCopyResponse TransferCopy(int itemId, int libraryId);
		/// <summary>
		/// Request to purchace an additional copy of the specified item in the specified library.
		/// </summary>
		/// <param name="itemId"></param>
		/// <param name="libraryId"></param>
		/// <param name="requestDate"></param>
		/// <returns></returns>
		ECamelError RequestNewCopy(int itemId, int libraryId, DateTime requestDate);
	}
}